package dao;

import entidades.Usuario;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceException;
import javax.persistence.Query;


public class UsuarioDao implements Dao<Usuario>  {

 
    private EntityManager em = EMF.get().createEntityManager();

    @Override
    public Usuario inserir(Usuario obj) {
        synchronized (this) {
            em.getTransaction().begin();
            if(obj.getId()==0L) {
                em.persist(obj);
            }
            else {
                em.merge(obj);
            }
            em.getTransaction().commit();
        }
        return obj;

    }

    @Override
    public Usuario pesquisar(Long obj) {
        return em.find(Usuario.class, obj);
    }

    @Override
    public void excluir(Usuario obj) {
        em.getTransaction().begin();
        Object objeto = em.merge(obj);
        em.remove(objeto);
        em.getTransaction().commit();
    }

    @Override
    public List<Usuario> getAll() {
        try {
            Query q = em.createQuery("select usuario from Usuario as usuario");
            return q.getResultList();
        } catch (Exception e) {
            System.out.println("Excecao HQL.." + e);
            return null;
        }
    }

    public Usuario existe(Usuario us)  throws NoResultException {
        
        System.out.println("lohin: "+us.getLogin()+" Senha: "+us.getSenha());
        Query query = em.createQuery("select u from Usuario u where u.login = :pLogin and u.senha = :pSenha");
        query.setParameter("pLogin", us.getLogin());
        query.setParameter("pSenha", us.getSenha());
        Usuario b = (Usuario) query.getSingleResult() ;
        
        System.out.println("bbbbbb++:"+b.getNome());
        //boolean encontrado = !query.getResultList().isEmpty();
        return b;
    }
}
